From 8e0091cac02a9c718df87649f07f6395cbf56e34 Mon Sep 17 00:00:00 2001 From: "vhanquez@kneesa.uk.xensource.com" Date: Wed, 21 Dec 2005 11:14:37 +0000 Subject: [PATCH] remove duplicate code to allocate a string ala printf (using kasprintf) Signed-off-by: Vincent Hanquez --- .../drivers/xen/xenbus/xenbus_client.c | 19 +++---------------- .../drivers/xen/xenbus/xenbus_probe.c | 2 +- .../drivers/xen/xenbus/xenbus_xs.c | 17 +++++------------ 3 files changed, 9 insertions(+), 29 deletions(-) diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c index b28cc76c48..048d33cb09 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c @@ -63,6 +63,7 @@ int xenbus_watch_path(struct xenbus_device *dev, const char *path, } EXPORT_SYMBOL(xenbus_watch_path); +extern char *kasprintf(const char *fmt, ...); int xenbus_watch_path2(struct xenbus_device *dev, const char *path, const char *path2, struct xenbus_watch *watch, @@ -70,16 +71,11 @@ int xenbus_watch_path2(struct xenbus_device *dev, const char *path, const char **, unsigned int)) { int err; - char *state = - kmalloc(strlen(path) + 1 + strlen(path2) + 1, GFP_KERNEL); + char *state = kasprintf("%s/%s", path, path2); if (!state) { xenbus_dev_fatal(dev, -ENOMEM, "allocating path for watch"); return -ENOMEM; } - strcpy(state, path); - strcat(state, "/"); - strcat(state, path2); - err = xenbus_watch_path(dev, state, watch, callback); if (err) { @@ -126,16 +122,7 @@ EXPORT_SYMBOL(xenbus_switch_state); */ static char *error_path(struct xenbus_device *dev) { - char *path_buffer = kmalloc(strlen("error/") + strlen(dev->nodename) + - 1, GFP_KERNEL); - if (path_buffer == NULL) { - return NULL; - } - - strcpy(path_buffer, "error/"); - strcpy(path_buffer + strlen("error/"), dev->nodename); - - return path_buffer; + return kasprintf("error/%s", dev->nodename); } diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c index 72e81712d8..09001a5463 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c @@ -505,7 +505,7 @@ static void xenbus_dev_release(struct device *dev) } /* Simplified asprintf. */ -static char *kasprintf(const char *fmt, ...) +char *kasprintf(const char *fmt, ...) { va_list ap; unsigned int len; diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c index cb4f33d35a..acc677da6b 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c @@ -276,18 +276,11 @@ static char *join(const char *dir, const char *name) { char *buffer; - buffer = kmalloc(strlen(dir) + strlen("/") + strlen(name) + 1, - GFP_KERNEL); - if (buffer == NULL) - return ERR_PTR(-ENOMEM); - - strcpy(buffer, dir); - if (!streq(name, "")) { - strcat(buffer, "/"); - strcat(buffer, name); - } - - return buffer; + if (strlen(name) == 0) + buffer = kasprintf("%s", dir); + else + buffer = kasprintf("%s/%s", dir, name); + return (!buffer) ? ERR_PTR(-ENOMEM) : buffer; } static char **split(char *strings, unsigned int len, unsigned int *num) -- 2.30.2